; base.asm
; referencia de las instrucciones
;http://courses.engr.illinois.edu/ece390/books/labmanual/inst-ref-general.html

%include "asm_io2.inc"

segment .data

; aca van los datos iniciados


segment .bss

; aca van los datos no iniciados

time_low_before		resd	1
time_high_before	resd	1
time_low_after		resd	1
time_high_after		resd	1


segment .text
		
		global _asm_main
		
_asm_main:

		enter	0,0		; construye un stack frame para un procedimiento de llamada de un lenguaje de alto nivel
		pusha

;;;;;;;;;;;;;;;;;;;;;;;;
;;; Inicio de codigo ;;;
;;;;;;;;;;;;;;;;;;;;;;;;		
		
		
		rdtsc
		mov		[time_low_before],eax
		mov		eax,[ES:0124h]
		rdtsc
		mov		[time_low_after],eax
		sub		eax,[time_low_before]
		call	print_uint
		call	print_nl
		
		
		
;;;;;;;;;;;;;;;;;;;;;;;;
;;; Fin de codigo ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;

	
		popa
		mov		eax, 0
		leave			; destruye el stack frame construido con enter
		ret				; POP IP EIP Y Ty transfiere control 
		